package com.aleaho.cftrack.utils;

import android.content.Context;
import android.location.LocationManager;

import com.baidu.mapapi.model.LatLng;

/**
 * 计算百度地图上两个坐标点之间的距离。
 * Created by Administrator on 2017/6/9.
 */

public class LocationUtil {

    //地球半径
    private static double EARTH_RADIUS = 6370996.81;

    //计算弧度
    private static double radian(double d) {
        return d * Math.PI / 180.00;
    }


    /**
     * 计算两个坐标点直接的直线距离。
     *
     * @param latA 坐标点A的纬度
     * @param lngA 坐标点A的经度
     * @param latB 坐标点B的纬度
     * @param lngB 坐标点B的经度
     * @return 直线距离，单位（米）。
     */
    public static double getDistanceOfTwoPoints(double latA, double lngA, double latB, double lngB) {
        double l1 = radian(latA);
        double l2 = radian(latB);

        double lon1 = radian(lngA);
        double lon2 = radian(lngB);

        //计算球面直线距离
        return Math.acos(Math.sin(l1) * Math.sin(l2) + Math.cos(l1) * Math.cos(l2) * Math.cos(lon2 - lon1)) * EARTH_RADIUS;
    }


    /**
     * 计算两个坐标点直接的直线距离。
     *
     * @param start 坐标点A
     * @param end   坐标点B
     * @return 直线距离，单位（米）。
     */
    public static double getDistanceOfTwoPoints(LatLng start, LatLng end) {

        return getDistanceOfTwoPoints(start.latitude, start.longitude, end.latitude, end.longitude);
    }


    public static boolean isLocationOpen(Context context) {
        LocationManager locationManager = (LocationManager) context
                .getSystemService(Context.LOCATION_SERVICE);
        // 判断GPS模块是否开启，如果没有则开启
        return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }
}
